package shujia.day01;

/*
    位运算符

    & | ^ ~ <<  >>  >>>

    位运算符两边是数值
 */
public class WeiOpt {
    public static void main(String[] args) {
        byte a = 3;
        byte b = 4;

        System.out.println(a & b);
        System.out.println(a | b);
        System.out.println(a ^ b);
        System.out.println(~ a);

        System.out.println(2<<3); // 2*2^3
        System.out.println(24>>2); // 24 / 2^2


        System.out.println(-24>>>2);
    }
}
/*
    3的补码： 00000011
    4的补码： 00000100

           00000011
        &  00000100
        ------------
           00000000
        结论：有0则0

           00000011
        |  00000100
        ------------
           00000111
        结论：有1则1

           00000011
        ^  00000100
        ------------
           00000111
        结论：相同则0不同则1


        ~  00000011
        ------------
           11111100
           11111011
           10000100


        结论：1变成0，0变成1

        -24的原码：10000000 00000000 00000000 00011000
        -24的反码：11111111 11111111 11111111 11100111
        -24的补码：11111111 11111111 11111111 11101000

        11111111 11111111 11111111 11101000
 >>>    0011111111 11111111 11111111 111010(00)

 */
